#include "printf.h"

void main() {
    // 第一阶段：先显示一些内容，让后续清屏效果直观可见
    puts("=== Initial Content (Before Clear) ===\n");
    printf("Line 1: Initial text\n");   // 演示普通文本输出
    printf("Line 2: More content here\n");  // 多行内容填充屏幕
    printf("Line 3: This will be cleared\n");   // 这行文字将在清屏时消失
    
  //  空循环，产生短暂延迟效果，能看到清屏前的效果
    // volatile确保循环不会被编译器优化掉
     for (int countdown = 100; countdown > 0; countdown--) {
        for (volatile int i = 0; i < 6000000; i++);  
    }
    
    // 第二阶段：清屏功能核心演示
    clear_screen(); // 执行清屏操作：清除屏幕所有内容，光标回到左上角
    puts("=== After Clear Screen ===\n");
    printf("Screen cleared successfully!\n\n");  // 清屏成功确认信息
    
    // 第三阶段：printf格式化输出核心功能演示
    puts("=== printf Formatting Tests ===\n");
    
     // 测试各种格式化输出功能
    printf("Integer: %d\n", 42);          // %d - 十进制整数输出
    printf("Negative: %d\n", -123);       // %d - 负数处理测试
    printf("Zero: %d\n", 0);              // %d - 零值边界测试
    printf("Hex: 0x%x\n", 0xABC);         // %x - 十六进制输出（小写字母）
    printf("Char: %c\n", 'X');            // %c - 单个字符输出
    printf("String: %s\n", "Hello");  // %s - 字符串输出
    printf("Percent: 100%%\n\n");         // %% - 百分号转义输出
    
    // 第四阶段：边界情况测试
    puts("=== Edge Cases ===\n");
    printf("INT_MAX: %d\n", 2147483647);     // 测试32位有符号整数最大值
    printf("INT_MIN: %d\n", -2147483648);    // 测试32位有符号整数最小值（特殊边界）
    printf("NULL: %s\n", (char*)0);          // 测试空指针安全性 - 应该输出"(null)"
    printf("Empty: %s\n", "");               // 测试空字符串处理
    

    while (1) {
     // 无限循环保持系统运行
    }
}